<?php


include 'D:\wangkai\汇付宝phpAPI\客户中心RSA2 PHP\Util.php';
use function Util\ASCIIAZ;
use function Util\RSA2sign;
use function Util\DeleteValue;
use function Util\PostJson;
use function Util\verifysign;


/*
  商户信息查询
  */



//入驻结果查询业务参数
$Oldbiz_content = array(
    "customer_id" => '231011174907041001',//申请编号
);


/*
公共请求参数
*/
$app_id='hy20240426110700440847';
$charset='utf-8';
$biz_content=json_encode($Oldbiz_content,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
$method='customer.info';
$format='json';
$sign_type='RSA2';
$version='1.0';
$notify_url='http://www.baidu.com';


/*
生成待签名串方法
签名通用步骤第一步，设所有发送或者接收到的数据为集合M，将集合M内非空参数值的参数按照参数名ASCII码从小到大排序（字典序），使用URL键值对的格式（即key1=value1&key2=value2…）拼接成字符串stringA 特别注意以下重要规则：
1.参数名ASCII码从小到大排序（字典序）；
2.如果参数的值为空不参与签名；
3.参数名区分大小写；第二步，使用商户RSA2私钥对待签名字符串stringA进行签名，得到签名sign
*/
$arrayData = array(
    'app_id' => $app_id,
    'biz_content' => $biz_content,
    'charset' => $charset,
    'method' => $method,
    'format' => $format,
    'sign_type' => $sign_type,
    'version' => $version,
    'notify_url'=>$notify_url
);


$signatureContent = ASCIIAZ($arrayData);
echo "签名前参数：".$signatureContent;
echo "<br/><hr>";


$sign = RSA2sign($signatureContent);


// 构建请求的JSON数据
$request_data = array(
    "charset" => $charset,
    "biz_content" => $biz_content,
    "method" => $method,
    "format" => $format,
    "sign" => $sign,
    "sign_type" => $sign_type,
    "version" => $version,
    "app_id" => $app_id,
    'notify_url'=>$notify_url
);


// 将数组转换为JSON字符串
$jsonString = json_encode($request_data,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
$arrayData1 = DeleteValue($jsonString);


//输出请求数据
echo "请求json".$arrayData1;
echo "<br/><hr>";


$Posturl = "https://openapi.heepay.com/customer-api/gateway";
$jsonData = $arrayData1;


PostJson($Posturl,$jsonData);

$Response=PostJson($Posturl,$arrayData1);

$response = json_decode($Response, true);

// 检查 json_decode 是否成功
if ($response === null) {
    // 处理解析错误
}

//如果你在使用 json_encode 编码中文时，发现中文字符被自动转换为 Unicode 字符，通常是因为默认行为是将非 ASCII 字符转换为 Unicode 转义序列。为了避免这种情况，并保持中文字符的原样输出，可以使用 JSON_UNESCAPED_UNICODE
$Result_biz_content = isset($response['biz_content']) ? json_encode($response['biz_content'], JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES) : '';
$Result_code = isset($response['code']) ? $response['code'] : '';
$Result_msg = isset($response['msg']) ? $response['msg'] : '';
$Result_trace_id = isset($response['trace_id']) ? $response['trace_id'] : '';

// Constructs a query string for validation using response data.
$queryString = 'biz_content=' . $Result_biz_content . '&code=' . $Result_code . '&msg=' . $Result_msg . '&trace_id=' . $Result_trace_id;


//同步返回验签
if ($response['code'] === 10000) {
    // Displays the response result and the verification string if code is 10000.
    echo "响应结果------->" . $Response . PHP_EOL;
    echo "验签串------>" . $queryString . PHP_EOL;
    verifysign($queryString, $response['sign']);
}


?>